package com.example.ximalaya.utils;

import com.example.ximalaya.base.BaseFragment;
import com.example.ximalaya.fragments.HistoryFragment;
import com.example.ximalaya.fragments.RecommendFragment;
import com.example.ximalaya.fragments.SubscriptionFragment;

import java.util.HashMap;
import java.util.Map;
/*
作用：创建Fragment和缓存已经创建好的Fragment
 */
public class FragmentCreator {

    public final static int INDEX_RECOMMEND=0;
    public final static int INDEX_SUBSCRIPTION=1;
    public final static int INDEX_HISTORY=2;
    public final static int PAGE_COUNT=3;

    //创建一个集合HashMap用于保存数据
    private static Map<Integer, BaseFragment> sCache=new HashMap<>();

    public static BaseFragment getFragment(int index){
        BaseFragment baseFragment=sCache.get(index);
        //如果不为空，说明之前已经保存过了，就不用重新创键，防止增加缓存
        //因为如果你向左滑动完后，再向右滑动的话，之前向左滑动时的页面已经加载过了，不为空，这时就不必要再重新new一个
        if(baseFragment!=null){
            return baseFragment;
        }
        //当传递到一个index进去switch里面，只会new一次baseFragment就跳出switch，这样其他的同名变量baseFragment就
        //不会被执行到，因此可以这么用
        switch (index){
            case INDEX_RECOMMEND:
                baseFragment=new RecommendFragment();
                break;
            case INDEX_SUBSCRIPTION:
                baseFragment=new SubscriptionFragment();
                break;
            case INDEX_HISTORY:
                baseFragment=new HistoryFragment();
                break;
        }
        //将Fragment保存起来
        sCache.put(index,baseFragment);
        //返回Fragment对象
        return baseFragment;
    }
}
